import Vue from 'vue'

/**
 * @description 格式化字典
 * @date 2020-06-21
 * @param {(string | undefined)} name 选中项
 * @param {Array} list 字典数组
 * @param {string} type 返回字典属性, 默认返回 value 属性
 * @param {string} findValue 用于匹配的key
 */
export function fmtDict(name, list, type = 'dictLabel', findValue = 'dictValue') {
  if (typeof name === 'number') {
    if (name === -1) return '--'
  }
  if (name || name === 0 || name === false) {
    const index = list.findIndex(item => {
      return String(item[findValue]) === String(name)
    })
    if (index !== -1) {
      return list[index][type] || '--'
    }
  } else {
    return '--'
  }
}
Vue.filter('fmtDict', fmtDict)

Vue.prototype.fmtDict = fmtDict

/**
 * @description 是否为空
 * @date 2020-06-21
 * @param {(string | number | undefined)} name 判断值
 */

Vue.filter('isNull', function(name) {
  if (typeof name === 'number') {
    if (name === -1) return '--'
  }
  if (name || name === 0) {
    return name
  } else {
    return '--'
  }
})

/**
 * @description 格式化多选字典
 * @date 2020-06-21
 * @param {(string | number | undefined)} name 判断值
 */

Vue.filter('fmtMultiDict', function(name, dictList) {
  const list = name?.split(',') ?? []
  if (list.length > 0) {
    const fmtList = []
    list.forEach(item => {
      fmtList.push(fmtDict(item, dictList))
    })
    return fmtList.join(',')
  } else {
    return '--'
  }
})
